/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Logica.AccesoDatos;

import Utilitarios.ServiceResult;
import Utilitarios.ManejadorBaseDatos;
import Utilitarios.Constantes;
import java.util.ArrayList;

/**
 *
 * @author Betty
 */
public class DatosUsuario implements Constantes{
    //instancia del manejador
    private ManejadorBaseDatos manejadorBaseDatos;

    public DatosUsuario() {
        //se inicializa la instancia del manejador
        this.manejadorBaseDatos = ManejadorBaseDatos.getInstancia();
//        manejadorBaseDatos = new ManejadorBaseDatos();
    }

     /**
     * obtiene el estado de error del manejador
     * @return
     */
    public Boolean getExisteError() {
        return this.manejadorBaseDatos.getExisteError();
    }

    /**
     * obtiene el mensaje de error del manejador
     * @return
     */
    public String getMensajeError() {
        return this.manejadorBaseDatos.getDescripcionError();
    }


    public ServiceResult autenticarUsuario(String correo, String contrasena) {


        ServiceResult resultado;

        //variable del resultado final
        resultado = new ServiceResult();

       
        ArrayList parametros = new ArrayList();

        parametros.add(correo);
        parametros.add(contrasena);


        if(this.manejadorBaseDatos.ejecutarSP(Constantes.SP_AUTENTICAR_USUARIO, parametros)){
        //se obtiene el valor del resultado del manejador
            ArrayList valorResultado = this.manejadorBaseDatos.getValorResultado();
            //y se establece el mismo a la variable del resultado final
            resultado.setValorResultado(valorResultado);
        }
        else {
            //si hubo error, retorna un resultado con un mensaje de error
            resultado = new ServiceResult("Error al cargar persona: " + this.manejadorBaseDatos.getDescripcionError());
        }

        //retorna con el resultado final
        return resultado;
    }


    public ServiceResult obtenerIdOrganizacion(int idRProy) {


        ServiceResult resultado;

        //variable del resultado final
        resultado = new ServiceResult();

        //Object nombre = "Ana";
        ArrayList parametros = new ArrayList();

        parametros.add(idRProy);



        if(this.manejadorBaseDatos.ejecutarSP(Constantes.SP_OBTENER_ID_ORGANIZACION, parametros)){
        //se obtiene el valor del resultado del manejador
            ArrayList valorResultado = this.manejadorBaseDatos.getValorResultado();
            //y se establece el mismo a la variable del resultado final
            resultado.setValorResultado(valorResultado);
        }
        else {
            //si hubo error, retorna un resultado con un mensaje de error
            resultado = new ServiceResult("Error al cargar persona: " + this.manejadorBaseDatos.getDescripcionError());
        }

        //retorna con el resultado final
        return resultado;
    }



    public ServiceResult insertarPersona(String nombre, String telefono, String correo, String puesto, String tipoPersona, String contrasena) {


        ServiceResult resultado;

        //variable del resultado final
        resultado = new ServiceResult();

        //Object nombre = "Ana";
        ArrayList parametros = new ArrayList();

        parametros.add(nombre);
        parametros.add(telefono);       
        parametros.add(correo);
        parametros.add(puesto);
        parametros.add(tipoPersona);
        parametros.add(contrasena);



        if(this.manejadorBaseDatos.ejecutarSP(Constantes.SP_INSERTAR_PERSONA, parametros)){
        //se obtiene el valor del resultado del manejador
            ArrayList valorResultado = this.manejadorBaseDatos.getValorResultado();
            //y se establece el mismo a la variable del resultado final
            resultado.setValorResultado(valorResultado);
        }
        else {
            //si hubo error, retorna un resultado con un mensaje de error
            resultado = new ServiceResult("Error al insertar responsable: " + this.manejadorBaseDatos.getDescripcionError());
        }

        //retorna con el resultado final
        return resultado;
    }


    public ServiceResult insertarRProyOrganizacion(int idPersona, int idOrganizacion) {


        ServiceResult resultado;

        //variable del resultado final
        resultado = new ServiceResult();

        //Object nombre = "Ana";
        ArrayList parametros = new ArrayList();

        parametros.add(idPersona);
        parametros.add(idOrganizacion);



        if(this.manejadorBaseDatos.ejecutarSP2(Constantes.SP_INSERTAR_RPROY_ORG, parametros)){
        //se obtiene el valor del resultado del manejador
            ArrayList valorResultado = this.manejadorBaseDatos.getValorResultado();
            //y se establece el mismo a la variable del resultado final
            resultado.setValorResultado(valorResultado);
        }
        else {
            //si hubo error, retorna un resultado con un mensaje de error
            resultado = new ServiceResult("Error al insertar responsable en la organizacion: " + this.manejadorBaseDatos.getDescripcionError());
        }

        //retorna con el resultado final
        return resultado;
    }
}
